import pandas as pd
# 重新加载 merge_data1.csv 文件
merge_data = pd.read_csv('merge_data1.csv')
# 筛选出2023年的数据
df_2023 = merge_data[merge_data['发货记录完成时间'].str.contains('2023')]

# 显示筛选后的数据的前几行
df_2023.head()
# 根据 '发货记录ID' 列合并 df_2023 和 merge_data
merged_data_2023 = pd.merge(df_2023, merge_data[['发货记录ID', '产品品牌']], on='发货记录ID', how='left')

# 显示合并后的数据的前几行
merged_data_2023.head()
# 将发货记录完成时间转换为日期格式，并提取月份
merged_data_2023['发货记录完成时间'] = pd.to_datetime(merged_data_2023['发货记录完成时间'])
merged_data_2023['月份'] = merged_data_2023['发货记录完成时间'].dt.month

# 筛选出货品类型为水泥（0）和矿粉（1）的数据
cement_data = merged_data_2023[merged_data_2023['货品类型'] == 0]
mineral_powder_data = merged_data_2023[merged_data_2023['货品类型'] == 1]

# 计算每个月的水泥和矿粉的发货吨位
cement_monthly_tonnage = cement_data.groupby('月份')['发货吨位'].sum().reset_index()
mineral_powder_monthly_tonnage = mineral_powder_data.groupby('月份')['发货吨位'].sum().reset_index()

cement_monthly_tonnage, mineral_powder_monthly_tonnage
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制水泥和矿粉每月发货吨位的对比图
plt.figure(figsize=(12, 6))
plt.plot(cement_monthly_tonnage['月份'], cement_monthly_tonnage['发货吨位'], marker='o', label='水泥')
plt.plot(mineral_powder_monthly_tonnage['月份'], mineral_powder_monthly_tonnage['发货吨位'], marker='s', label='矿粉')
plt.xlabel('月份', fontsize=14)
plt.ylabel('发货吨位', fontsize=14)
plt.title('2023年水泥与矿粉每月发货吨位对比', fontsize=16)
plt.xticks(range(1, 13))
plt.grid(True)
plt.legend()

# 显示图形
plt.tight_layout()
plt.show()
# 计算每个月的水泥和矿粉的货款
cement_monthly_payment = cement_data.groupby('月份')['货款'].sum().reset_index()
mineral_powder_monthly_payment = mineral_powder_data.groupby('月份')['货款'].sum().reset_index()

# 绘制水泥和矿粉每月货款的对比图
plt.figure(figsize=(12, 6))
plt.plot(cement_monthly_payment['月份'], cement_monthly_payment['货款'], marker='o', label='水泥')
plt.plot(mineral_powder_monthly_payment['月份'], mineral_powder_monthly_payment['货款'], marker='s', label='矿粉')
plt.xlabel('月份', fontsize=14)
plt.ylabel('货款', fontsize=14)
plt.title('2023年水泥与矿粉每月货款对比', fontsize=16)
plt.xticks(range(1, 13))
plt.grid(True)
plt.legend()

# 显示图形
plt.tight_layout()
plt.show()